Etsittävä voidaan antaa grep:ille joko:   tulosta etsittävä jotenkin | grep ...           tai: grep sen_tiedoston_nimi_josta_etsitään
Grep käy sille annetut tekstit läpi rivi kerrallaan järjestyksessä alusta loppuun ja tulostaa näytölle kaikki ne rivit joilta etsitty löytyy. 
Grep on yleensä määrätty värittämään hakutermin tulostuksensa jokaisella rivillä.
 

Yksinkertainen haku: echo "hhh 58 jjjj" | grep 58  tai kun halutaan painottaa että ennen esittävää ja etsittävän perässä täytyy olla välilyönti:  echo "hhh 58 jjjj" | grep ". 58 ."
 
Jos etsitään merkkijonoa jonka alku ja loppu tiedetään niin hakusana on: tekstialussa.*tekstiloppussa . Tekstialussa ja tekstilopussa saavat olla eri riveillä, ja joskus täytyykin painottaa että niiden täytyy olla samallarivillä joten hakusana onkin: -e tekstialussa -e tekstilopussa
 
etsittäessä merkkiä jolla on erikoismerkitys niin sen eteen laitetaan \. 
- esimerkiksi kun etsitään sanaa $-hinta niin hakusana on: \$-hinta 

Jos hakusana on etsittävän rivin alussa kirjoitetaan hakusanan eteen ^ ja jos se on lopussa kirjoitetaan hakusanan perään $ 
siis ^$ on tyhjä rivi.

[asdfg] etsii mitähyvansä merkeistä asdfg (ei siis koko sanaa. Kun etsitään sanaa niin jätetään sulut pois). 
[^asdfg] etsii mitähyvänsä muuta merkkiä ( siis grepin negaatio )

Grep tuntee ennaltamäärättyjä merkkiryhmiä. Joskus hyväksytään kaksois-sulun paikalla vain yksi sulku:
[[:alnum:]]->[[A-Za-z0-9]]      [[:alpha:]]->[A-Za-z]         [[:blank:]]->välilyönti tai TAB   [[:cntrl:]]->jokin kontrollimerkki     
[[:digit:]]->[0-9]              [[:graph:]]->ASCII 33 - 126   [[:lower:]]->[a-z]                [[:print:]]->ASCII 32 - 126 ja välilyönti      
[[:space:]]->välilyönti ja TAB  [[:upper:]]->[A-Z]            [[:xdigit:]]->[0-9A-Fa-f]

pilkku menettää erikoismerkityksensä hakusanan viimeisenä merkkinä. ¤
useimmat erikoismerkit menettävät erikoismerkityksensä merkkien []   tai: '' välissä

Grepin korvausmerkkit (=jokerimerkit):
.* 		korvaa mielivaltaisen määrän merkkejä, ja sen paikalla ei välttämättä täydy olla merkkiä ollenkaan
+ 		korvaa mielivaltaisen määrän merkkejä, ja sen paikalla täytyy olla vähintään yksi merkki
.		korvaa täsmälleen yhden merkin, siis: . etsittävä . kun halutaan painottaa että ennen ja jälkeen etsittävän on välilyönnit
[abcde] 	korvaa täsmälleen yhden mukanaolevista merkeistä
[^abcde] 	korvaa kaikki muut merkit paitsi jonkun mukanaolevista merkeistä
[a-e] 		korvaa täsmälleen yhden aakkosmerkkien välissä olevista merkeistä
 
grepin kytkimet:
-r  etsitään rekursiivisesti                          -s  ei anneta varoitusviestejä                      -c  vain löytöjen lukumäärä tulostetaan 
-h  tulostaa sen tekstirivin jolta etsitty löytyy     -w  oleta etsittävän alkuun ja loppuun \< ja \>     -v  poista hakutuloksista ne joissa etsitty on osana   
-l  tulostaa sen tiedoston nimen josta etsitty löytyy -n  tulostaa myös miltä riviltä etsitty löytyi      -i  etsittäessä ei huomioida kirjainkokoa     
-F  etsitään kirjaimiltaan juuri sellaista mikä etsittäväksi määrättiin                                   -m 1    vain ensimmäinen osuma tulostetaan
-e  optiot on nyt kirjoitettu ja haettava seuraa vaikka se alkaisi -
-E  ota käyttöön laajennoksia, mm. \ ei tarvita; siis esimerkiksi kun etsit find-käskyn "placeholdereita" niin etsittävä on: grep -lrE {} mistä_etsittään
-A <numero>  tai: -B <numero> tai: -C <numero>      tulosta <numero> riviä haetun rivin edestä, jäljestä yai molemminpuolin
- jostain syystä kun etsii ilmaisua: -exec kirjoitetaan hakusana: \\-exec
 
grepin TAI-funktio: [[ $(echo "$apu" | grep -e .doc -e .html -e .odt -e .sgml -e .xml ) ]] && <tee jotakin kun apu:ssa on jokin peräliitteistä>


Esimerkkejä joissa sääntöjä on sovellettu erikoisella tavalla:
"[0-9]\{5\}"    etsii viisinumeroista sanaa jonka jokainen merkki voi olla 0-9 
'\<c...h\>'     etsii viisikirjaimisia sanoja jotka alkavat c:llä ja päättyvät h:hon. Esimerkki: grep '\<c...h\>' /usr/share/dict/words
[![:lower:]]    etsii sanaa jossa on ainakin yksi pieni kirjain
[a-c]-ajokortti etsii a-, b- ja c-ajokortit mutta ei muita ajokortteja
[\ e]grep       etsii grep:in ja egrep:in muttei muita grepejä
'^\..*\.$'      etsittävä alkaa pisteellä ja loppuu pisteeseen ja välissä on jotain tekstiä.
egrep  ^a\|^b\  etsii rivit jotka alkaa a:lla tai b:llä
grep -r xyz     etsii  xyz:taa kaikista nykyisen kansion tiedostoista
grep -o -b  "etsittänvä" | awk -F: '{print $1}' # tulostaa etsittävän ensimmäisen merkin sijainti-numeron
egrep "a{2}"    etsittävässä täytyy olla peräkkäin vähintään 2 a:ta
grep -E -o ".{0,5}etsittävä.{0,5}"  tulostaa vain etsittävä:n ja korkeintaan 5 merkkiä edestä ja takaa


huomautuksia:
- nuo haut siis etsivät tiedoston sisällöstä. Kun etsit tiedoston nimestä niin käsky on esimerkiksi: find /home | grep "haku"
- jos haluaa etsiä kahta sanaa samassa haussa onnisttu se käskyllä: egrep -w 'sana1|sana2' tiedosto
- grepin tulostuksesta voi muodostaa loopin: for i in /etc/profile.d/*.sh ; do ....; done
- D ACTION, --devices=ACTION 	If an input file is a device, FIFO or socket, use ACTION to process it. By default, ACTION is read, which means that devices are read just as if they were ordinary files. If ACTION is skipJos etsitään merkkijonoa jonka alku ja loppu tiedetään niin hakusana on: tekstialussa.*tekstiloppussa . Tekstialussa ja tekstilopussa saavat olla eri riveillä, jkoskus se on hyvä ja joskus sietämätöntä ja täytyy painottaa että  Jos halutaan että niiden täytyy olla samallarivillä niin hakusana onki: tekstialussa -e teksdtilopåussa, devices are silently skipped.

- mikäli halutaan painottaa että ennen haettavaa ja sen perässä on välilyönti ja kun etsittävän on löydyttänä myös kun se on rivin alussa tai lopussa: 
  echo "58 hhhh 58 jjjj 58" | grep -e ". 58 ." -e ^"58 ." -e ". 58"$


